<?php
	include_once(realpath(dirname(__FILE__)) . "/../../../classes/PluginsClassiques.class.php");
	include_once(realpath(dirname(__FILE__)) . "/../../../classes/Lang.class.php");

	class Dc_newsletter_basic extends PluginsClassiques{
		
		const VERSION   	= '1.2.4';
		const MODULE    	= 'Newsletter Basic';

		var $id;
		var $email, $nom, $prenom, $langue, $date;
		var $table = "dc_newsletter_basic";
		var $bddvars = array("id", "email", "nom", "prenom", "langue", "date");
		var $table_multilingue = "dc_newsletter_multilingue";
		
		function dc_newsletter_basic(){
			$this->PluginsClassiques("dc_newsletter_basic");	
		}
		
		function init(){
			// TITRE - CHAPO - DESCRIPTION - DEVISE
			$this->ajout_desc(
				"Newsletter Basic",
				"Plugin Newsletter Basic",
				"Ce plugin permet de mettre en place un formulaire d'abonnement ou de d&eacute;sabonnement &agrave; une newsletter.",
				1);

			$newsletter = new dc_newsletter_basic();
			$query_newsletter = "CREATE TABLE IF NOT EXISTS `dc_newsletter_basic` (
  			`id` 				int(10) unsigned 						NOT NULL auto_increment COMMENT 'id de l''abonne',
  			`email` 			varchar(100) 							NOT NULL COMMENT 'Email de l''abonne',
  			`nom` 				varchar(100) 							NOT NULL COMMENT 'Nom de l''abonne',
  			`prenom` 			varchar(100) 							NOT NULL COMMENT 'Prenom de l''abonne',
  			`langue`			int(11)									NOT NULL default '1' COMMENT 'Langue',
  			`date`				datetime 								NOT NULL COMMENT 'Date d''inscription de l''abonne',
  			PRIMARY KEY  (`id`)
			)";
			$result_newsletter = mysql_query($query_newsletter, $this->link);
			
			$query_newsletter = "CREATE TABLE IF NOT EXISTS `dc_newsletter_multilingue` (
  			`id` 				int(10) unsigned 						NOT NULL auto_increment COMMENT 'id',
  			`cle` 				varchar(100) 							NOT NULL COMMENT 'Cle de traduction',
  			`traduction` 		varchar(100) 							NOT NULL COMMENT 'Traduction de la cle',
  			`langue`			int(11)									NOT NULL default '1' COMMENT 'Langue',
  			PRIMARY KEY  (`id`)
			)";
			$result_newsletter = mysql_query($query_newsletter, $this->link);
			
			$query_newsletter = "INSERT IGNORE INTO `dc_newsletter_multilingue` (`id`, `cle`, `traduction`, `langue`) VALUES
			(1, 'DC_NEWSLETTER_BASIC_LANG_TITRE', 'Gestion de votre abonnement &agrave; la newsletter', 1),
			(2, 'DC_NEWSLETTER_BASIC_LANG_EMAIL', 'Email', 1),
			(3, 'DC_NEWSLETTER_BASIC_LANG_NOM', 'Nom', 1),
			(4, 'DC_NEWSLETTER_BASIC_LANG_PRENOM', 'Pr&eacute;nom', 1),
			(5, 'DC_NEWSLETTER_BASIC_LANG_CHOIX', 'Votre choix', 1),
			(6, 'DC_NEWSLETTER_BASIC_LANG_CHOISISSEZ', 'Choisissez', 1),
			(7, 'DC_NEWSLETTER_BASIC_LANG_ABONNER', 'S\'abonner', 1),
			(8, 'DC_NEWSLETTER_BASIC_LANG_DESABONNER', 'Se d&eacute;sabonner', 1),
			(9, 'DC_NEWSLETTER_BASIC_LANG_VALIDER', 'Valider', 1),
			(10, 'DC_NEWSLETTER_BASIC_LANG_OBLIGATOIRE', 'Les champs suivis d\'un * sont obligatoires.', 1),
			(11, 'DC_NEWSLETTER_BASIC_LANG_ABO_OK', 'Votre abonnement &agrave; &eacute;t&eacute; pris en compte', 1),
			(12, 'DC_NEWSLETTER_BASIC_LANG_ABO_EXISTE', 'Erreur, votre email est d&eacute;j&agrave; inscrite', 1),
			(13, 'DC_NEWSLETTER_BASIC_LANG_ABO_EMAIL', 'Erreur, v&eacute;rifier votre adresse email', 1),
			(14, 'DC_NEWSLETTER_BASIC_LANG_DESABO_OK', 'Votre abonnement &agrave; &eacute;t&eacute; interrompu.', 1)
			" ;
			$result_newsletter = mysql_query($query_newsletter, $this->link);
			//$newsletter->debug_mysql($result_newsletter,$query_newsletter );
			
		}
		
		function destroy(){
		/*******************************************************************************
		*	Supprime les bases de données créer par le plugin
		*	Désactiver pour éviter la suppression par erreur des adresses mails
 		******************************************************************************/	
			//$query_delete = "DROP TABLE `dc_newsletter_basic`";
			//$result_delete = mysql_query($query_delete, $this->link);
			//$query_delete = "DROP TABLE `dc_newsletter_multilingue`";
			//$result_delete = mysql_query($query_delete, $this->link);
		}
		
		function checkemail($email) {
		/*******************************************************************************
		*	Valide une adresse email
 		******************************************************************************/
			if( (preg_match('//',$email)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) {
				$host = explode('@', $email);
				if(checkdnsrr($host[1].'.', 'MX') ) return true; 
				if(checkdnsrr($host[1].'.', 'A') ) return true; 
				if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
			}
			return false;
		}
		
		function checkversion($version) {
		/*******************************************************************************
		*	Vérifie si une nouvelle version est disponible
 		******************************************************************************/
 			include_once("../lib/magpierss/extlib/Snoopy.class.inc");
 			$snoopy = new Snoopy();
			//if($snoopy->fetch("http://contrib.thelia.fr/IMG/txt/version.txt")){
			if($snoopy->fetch("http://www.duo-concept.fr/plugin/version.txt")){
				$remote_version = trim($snoopy->results);
				if (version_compare($remote_version, $version) > 0) {
					//return("<a href='http://contrib.thelia.fr/spip.php?article181' class='newversion'>Mise &agrave; jour disponible (v$remote_version)</a>");
					return("<a href='http://www.duo-concept.fr/plugin/dc_newsletter_basic-$remote_version.zip' class='newversion'>Mise &agrave; jour disponible (v$remote_version)</a>");
				}
			}
		}

		function debug_mysql($resul,$query) {
		/*******************************************************************************
		*	Genere un rapport de debug en cas d'erreur mysql
 		******************************************************************************/
			if (!$resul) {
    			die('Fonction de debug MySQL<br/><br/>Erreur: ' . mysql_error() . '<br/><br/>Requete: ' . $query );
			}
		}

		function charger($email){
		/*******************************************************************************
		*	Charge les infos sur l'abonnée
 		******************************************************************************/
			return $this->getVars("select * from $this->table where email=\"$email\"");
		}
				
		function envoimail($destinataire,$sujet,$corps){
		/*******************************************************************************
		*	Fonction d'envoi d'email
 		******************************************************************************/
			$mail = new PHPMailer();
			$mail->IsMail();
			$mail->From = $emailcontact->valeur;
			$mail->FromName = $nomsite->valeur;
			$mail->Subject = $sujet;
			$mail->MsgHTML($corps);
			$mail->AddAddress($client->email,$client->nom." ".$client->prenom);
			$mail->send();
		}
		
		function action(){
			global $action;
			global $res;
			$resultat = '';
			
			/*******************************************************************************
			*	Abonnement depuis le F.O.
 			******************************************************************************/	
 			if($action == "dc_newsletter_basic_ajouter"){
				$this->email  = $_REQUEST['dc_newsletter_basic_email'];
				$this->nom	  = $_REQUEST['dc_newsletter_basic_nom'];
				$this->prenom = $_REQUEST['dc_newsletter_basic_prenom'];
				$this->langue = $_REQUEST['dc_newsletter_basic_langue'];
				$this->date = date("Y-m-d H:i:s");
				
				$validation = new dc_newsletter_basic();
				if($validation->checkemail($this->email)){
					if(! $validation->charger($this->email)) {
						$this->add();
						$resultat = "<span style='color:green; font-size: 12px; margin: 10px 0;'>#DC_NEWSLETTER_BASIC_LANG_ABO_OK</span>";
						// Envoi email
						
					} else {
						$resultat = "<span style='color:red; font-size: 12px; margin: 10px 0;'>#DC_NEWSLETTER_BASIC_LANG_ABO_EXISTE</span>";
					}
				} else {
					$resultat = "<span style='color:red; font-size: 12px; margin: 10px 0;'>#DC_NEWSLETTER_BASIC_LANG_ABO_EMAIL</span>";
				}
			}
			/*******************************************************************************
			*	Désabonnement depuis le F.O.
 			******************************************************************************/	
			else if($action == "dc_newsletter_basic_supprimer"){
				$this->email  = $_REQUEST['dc_newsletter_basic_email'];
				if($this->charger($this->email)) {
					$this->delete();
					$resultat = "<span style='color:red; font-size: 12px; margin: 10px 0;'>#DC_NEWSLETTER_BASIC_LANG_DESABO_OK</span>";
					// Envoi email
				}
			}
    		$res = preg_replace("/\\#DC_NEWSLETTER_BASIC_MSG\[([^]]*)\]/", $resultat != '' ? "\\1" : '', $res);
    		$res = str_replace('#DC_NEWSLETTER_BASIC_MSG_TXT', $resultat, $res);
    		
    		/*******************************************************************************
			*	Gestion du bouton checkbox dans la page modifier mon compte
 			******************************************************************************/
    		$abonnement = new dc_newsletter_basic();
    		$this->email = $_SESSION['navig']->client->email;
    		if($abonnement->charger($this->email)) {
    			$res = str_replace('#NEWSLETTER_CHECKED', 'checked="checkcked"', $res);
    		} else {
    			$res = str_replace('#NEWSLETTER_CHECKED', '', $res);
			}
			
			/*******************************************************************************
			*	Gestion du multilingue sur le F.O.
 			******************************************************************************/
 			if (isset($_SESSION['navig']->lang)) $langue=$_SESSION['navig']->lang;
 			elseif(isset($_GET['lang'])) $langue=$_GET['lang'];
 			else $langue=1;
    		
    		$traduction = new dc_newsletter_basic();
    		$query = "SELECT cle, traduction FROM $traduction->table_multilingue WHERE langue=$langue";
            $resul = mysql_query($query, $traduction->link);
            if (!$resul) {
    			die('Erreur: ' . mysql_error() . '<br/>Req: ' . $query );
			}
            $i = 0;
            while($row = mysql_fetch_object($resul)) {
				$i++;
				$res = str_replace('#'.$row->cle, $row->traduction, $res);
    		}
		}
		
		function apresclient($client){
		/*******************************************************************************
		*	Abonnement lors de la création d'un client
 		******************************************************************************/
			global $action;
			if($action=="creercompte" AND $_REQUEST['newsletter']=="oui"){
				$newsletter = new dc_newsletter_basic();
				$this->nom 		= $_SESSION['navig']->client->nom;
				$this->prenom	= $_SESSION['navig']->client->prenom;
				$this->langue	= $_SESSION['navig']->client->lang;
				$this->email	= $_SESSION['navig']->client->email;
				if(!$newsletter->charger($this->email)) {
					$this->date = date("Y-m-d H:i:s");
					$this->add();
				} else {
					$this->charger($this->email);
					$this->nom 		= $_SESSION['navig']->client->nom;
					$this->prenom	= $_SESSION['navig']->client->prenom;
					$this->langue	= $_SESSION['navig']->client->lang;
					$this->maj();
				}
			} else {
				// Si l'email est dejà dans la base et que le client décoche l'inscription de la newsletter
				$newsletter = new dc_newsletter_basic();
				$this->email	= $_SESSION['navig']->client->email;
				$this->charger($this->email);
				$this->delete();
			}
		}
		
		function apresmodifcompte(){
		/*******************************************************************************
		*	Modification de l'abonnement lors de la modification d'un client
 		******************************************************************************/
			global $action;
			if($action=="modifiercompte"){
				$newsletter = new dc_newsletter_basic();
				$this->email 	= $_REQUEST['emailtocheck'];
				// Si n'est pas inscrit
				if(! $newsletter->charger($this->email)) {
					if($_REQUEST['newsletter']=="oui") {
						$this->nom 		= $_SESSION['navig']->client->nom;
						$this->prenom	= $_SESSION['navig']->client->prenom;
						$this->langue	= $_SESSION['navig']->client->lang;
						$this->date		= date("Y-m-d H:i:s");
						$this->add();
					}
				// Si est deja inscrit, mise à jour
				} else {
					$this->charger($this->email);
					if($_REQUEST['newsletter']=="oui"){
						$this->nom 		= $_SESSION['navig']->client->nom;
						$this->prenom	= $_SESSION['navig']->client->prenom;
						$this->langue	= $_SESSION['navig']->client->lang;
						$this->email	= $_SESSION['navig']->client->email;
						$this->maj();
					} else {
						$this->delete();
					}
				}
			}
		}
}		
?>
